#include "form2.h"
#include "ui_form2.h"
#include <QFile>
#include <QString>
#include <QMessageBox>
#include <qfiledialog.h>
#include <QDir>
#include <QStringListModel>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QString sPath = "E:/";
    model = new QFileSystemModel(this);
    model->setFilter(QDir::NoDotAndDotDot | QDir::AllDirs |QDir::Drives);
    model->setRootPath(sPath);
    ui->tree_direct->setModel(model);
       QTreeView *tree = new QTreeView;
       tree->setModel(model);
       qlmodel = new QFileSystemModel;
       qlmodel->setFilter(QDir::NoDotAndDotDot | QDir::Files);
    qlmodel->setRootPath(sPath);
    QStringList filter;
    filter << "*.txt";
    qlmodel->setNameFilters(filter);
    ui->listdirect->setModel(qlmodel);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void FORM2_H::on_tree_direct_clicked(const QModelIndex &index)
{
        QString sPath = model->fileInfo(index).absoluteFilePath();
        ui->listdirect->setRootIndex(qlmodel->setRootPath(sPath));
        ui->pathedit->setText(sPath);
}

void FORM2_H::on_listdirect_doubleClicked(const QModelIndex &index)
{
    QString txtPath = model->fileInfo(index).absoluteFilePath();
    QFile file(txtPath);
        if (!file.open(QIODevice::ReadWrite| QIODevice::Text))
        {
            //qDebug() <<  "Cannot open a file";
            QMessageBox* pmbx =new QMessageBox("ERROR!",
                                "<b>Не могу открыть файл на чтение/запись</b>",
                                QMessageBox::Critical,
                                QMessageBox::Ok,
                                QMessageBox::No,
                                 QMessageBox::Escape);
            pmbx->exec();
            delete pmbx;
                  }
        QTextStream stream(&file);
        QString str = stream.readAll();
        ui->txteditor->setText(str);
        file.close();

}

void FORM2_H::on_pushButton_clicked()
{
   QString txtPath = ui->pathedit->text();
    QFile file(txtPath);
    QString str = ui->txteditor->toPlainText();
    if (file.open(QIODevice::WriteOnly))
    {
        QTextStream stream(&file);
        stream << str; //Запишет ui->txteditor->toplainText();
        file.close();
        if (stream.status() != QTextStream::Ok)
        {
            qDebug() << "Ошибка записи файла";
            QMessageBox* pmbx =new QMessageBox("ERROR!",
                                "<b>Невозможно открыть файл на чтение/запись</b>",
                                QMessageBox::Critical,
                                QMessageBox::Ok,
                                QMessageBox::No,
                                 QMessageBox::Escape);
            pmbx->exec();
            delete pmbx;
        } else {
            QMessageBox* pmbx =new QMessageBox("saved!",
                                "<b>Cохранено</b>",
                                QMessageBox::Information,
                                QMessageBox::Ok,
                                QMessageBox::No,
                                 QMessageBox::Escape);
            pmbx->exec();
            delete pmbx;}
    }
}

void MainWindow::on_listdirect_clicked(const QModelIndex &index)
{
 QString txtPath = qlmodel->fileInfo(index).absoluteFilePath();
 ui->pathedit->setText(txtPath);
}

void MainWindow::on_open_button_clicked()
{
   QString fileName_DATA = QFileDialog::getOpenFileName(this, tr("Open File"),"c:/",tr("txt (*.txt)"));
        qDebug()<<fileName_DATA;
       QFile file(fileName_DATA);
        if (!file.open(QIODevice::ReadWrite| QIODevice::Text)) {
           QMessageBox* pmbx =new QMessageBox("ERROR!",
                               "<b>Невозможно открыть файл</b>",
                               QMessageBox::Critical,
                               QMessageBox::Ok,
                             QMessageBox::No,
                                 QMessageBox::Escape);
            pmbx->exec();
          delete pmbx;
           return;
        }
        else {
         //показать директории в qtreeview,qlistview,lineedit
           QString mypath = fileName_DATA;
           ui->listdirect->setRootIndex(qlmodel->index(fileName_DATA).parent());
                      qDebug()<<mypath;
           ui->tree_direct->scrollTo(model->index(mypath));
           ui->pathedit->setText(mypath);
            //и открыть в QtextEdit
           QTextStream stream(&file);
           QString str = stream.readAll();
           ui->txteditor->setText(str);
           file.close();

        }
}

void MainWindow::on_saveas_clicked()
{
    QString filename = QFileDialog::getSaveFileName(
            this,
            tr("Save Document"),
            QDir::currentPath(),
            tr("*.txt"))+".txt";
    QFile file(filename);

    if (!file.open(QIODevice::ReadWrite| QIODevice::Text)) {
        QMessageBox* pmbx =new QMessageBox("ERROR!",
                            "<b>Не могу открыть файл на чтение/запись</b>",
                            QMessageBox::Critical,
                            QMessageBox::Ok,
                            QMessageBox::No,
                             QMessageBox::Escape);
        pmbx->exec();
        delete pmbx;
        return;
    } else{
        QString str = ui->txteditor->toPlainText();
        QTextStream stream(&file);
        stream << str; //Запишет ui->txteditor->toplainText();
        file.close();
    }
      }
